package com.yuyou.train.user.service;

import java.util.List;

import com.yuyou.train.service.api.lesson.dto.ResourceDetailDTO;
import com.yuyou.train.service.api.lesson.dto.UserLessonTreeDTO;
import com.yuyou.train.service.api.lesson.entity.Lesson;
import com.yuyou.train.service.api.lesson.entity.Rule;
import com.yuyou.train.service.api.user.entity.User;
import com.yuyou.train.service.api.user.entity.UserLessonProgress;
import com.yuyou.train.service.api.user.entity.UserMedalItem;
import com.yuyou.train.user.vo.req.ReqBehavior;
import com.yuyou.train.user.vo.resp.RespGetLessonContent;
import com.yuyou.train.util.bean.ResBoolSimpleInfo;



public interface IUserLessonProgressBehaService {

	
	ResBoolSimpleInfo<String> addLessonPoints(String userId,Lesson lesson);
	
	ResBoolSimpleInfo<String> addMedalPoints(String userId,UserMedalItem userMedalItem);

	/**
	 * 保存用户班级点评
	 * @param user
	 * @param currProgress
	 * @param reqBehavior
	 * @return
	 * @throws Exception
	 */
	ResBoolSimpleInfo<String> solveEnd(User user,
			UserLessonProgress currProgress, ReqBehavior reqBehavior) throws Exception;

	void chooseEnd(RespGetLessonContent respOpenLessonContent, User user,
			String lessonId) throws Exception;

	void chooseResource(RespGetLessonContent respOpenLessonContent,
			ResourceDetailDTO resourceDetailDTO);

	void chooseVideo(			
			RespGetLessonContent respOpenLessonContent,
			ResourceDetailDTO resourceDetailDTO, Rule rule,String status,String loginUserId);

	void chooseMusic(
			RespGetLessonContent respOpenLessonContent,
			ResourceDetailDTO resourceDetailDTO, String status);

	void chooseFile(RespGetLessonContent respOpenLessonContent,
			ResourceDetailDTO resourceDetailDTO, String status);

	void chooseExam(UserLessonProgress currProgress,
			RespGetLessonContent respOpenLessonContent,
			ResourceDetailDTO resourceDetailDTO, String status);

	void chooseThought(
			RespGetLessonContent respOpenLessonContent, String userId,String foreignId,String status);

	void chooseHwNeedComment(
			UserLessonProgress userLessonProgress,
			RespGetLessonContent respOpenLessonContent,
			Rule rule,
			String userId, String loginUserId,String foreignId,String status);

	void chooseHwJustCommit(
			UserLessonProgress userLessonProgress,
			RespGetLessonContent respOpenLessonContent,
			Rule rule,
			String userId, String loginUserId,String foreignId,String status);

	void genEnd(List<UserLessonTreeDTO> res, String userId);

	UserLessonTreeDTO genEndObj(String endUserLesSta);

	UserLessonTreeDTO genEndLeafObj(String endUserLesSta);
	
	
	
    

}